import { specsList, specsCount } from "../../request/api"

const state = {
    //列表
    list: [],
    //分页
    count: 0,   //总页数
    page: 1,     //当前页
    size:2,         //每页的数量
}
const mutations = {
    changeList(state, val) {
        state.list=val
    },
    changeCount(state, val) {
        state.count=val
    },
    changePage(state, val) {
        state.page=val
    }
}
const actions = {
    asyncChangeList(context,flag) {
        //如果flag为true=>不传参 取所有条数   flag为false=>传参 取指定条数
        let isAll=flag?"":{size:context.state.size,page:context.state.page}
        specsList(isAll).then(res => {
            //1.防止数据删除完毕后报错
            let arr = res.data.list?res.data.list:[]
            //2.当前页无数据后 更新当前页码数(让当前页码数-1) 并且当前页码数最小值为1 再更新列表(重新请求数据)
            if (arr.length <= 0 && context.state.page > 1) {
                context.commit("changePage", context.state.page - 1);
                context.dispatch("asyncChangeList")
            }
        /* 
        数据中的每一项里面的attrs是字符串数组，我们要将字符串数组转换成数组之后再给列表传过去
        后台给我们的格式：[{name:"颜色",attrs:"[红,黄,蓝]"},{name:"内存",attrs:"[16,32,64]"}]
        我们想要的格式：[{name:"颜色",attrs:[红,黄,蓝]},{name:"内存",attrs:[16,32,64]}]
      */
            arr.forEach(item => {
                item.attrs = JSON.parse(item.attrs)
            });
            // console.log(arr);
            context.commit("changeList", arr);
        })
    },

    asynChangeCount(context) {
        specsCount().then(res => {
            context.commit("changeCount",res.data.list[0].total)
        })
    },
    asyncChangePgae(context,num) {
        //当前页发生改变时 修改当前页码数 重新请求列表数据
        context.commit("changePage", num);
        context.dispatch("asyncChangeList");
    }
}
const getters = {
    list(state) {
        return state.list
    },
    count(state) {
        return state.count
    },
    size(state) {
        return state.size
    }
}
export default {
    state, mutations, actions, getters,
    namespaced:true
}